#! /bin/bash
#
# Copyright (c) Citrix Systems 2008. All rights reserved.
#
# wait (given specified timeout) for xapi to complete all
# initialisation (including storage initialisation)
#

[ -e /proc/xen ] || exit 0

usage () {
  echo Usage: $0 \<timeout\> \(seconds\) \[tag\]
  echo Poll for xapi to complete initialisation, for up to \<timeout\> seconds.
  echo Log to syslog on failure, optionally tagging with \[tag\].
  exit 1
}

XAPI_INIT_COMPLETE_COOKIE=/var/run/xapi_init_complete.cookie

if [ -z "$1" ]; then
  usage
else
  RETRIES=$1
fi

while [ ${RETRIES} -ne 0 ]; do
    if [ -e ${XAPI_INIT_COMPLETE_COOKIE} ]; then
        # success; xapi has completed initialisation
	exit 0
    fi
    sleep 1
    RETRIES=$(( ${RETRIES} - 1 ))
done

# xapi did not complete initialisation during specified timeout interval
TAG=${2:-wait-xapi-init-complete}
logger --tag ${TAG} --stderr "Failed to detect xapi init complete after ${1}s"

exit 1
